Many computer games allow multiple people (players, gamers, users, etc.) using networked computers (e.g. general purpose computers or dedicated game consoles) to participate in a game with or against each other through a network (e.g. a LAN, a WAN, the Internet, a direct cable or wireless connection, etc.). Such games are commonly based on variations of client-server architectures or peer-to-peer (P2P) architectures.
In a common P2P system, each computer may communicate directly with all of the other computers participating in the game. Additionally, each computer typically maintains its own model or simulation of the game and broadcasts its own command data to all the other computers through the network. Each computer, thus, updates its model based on commands of its player and all of the received command data.
In a client-server system, on the other hand, each computer client typically communicates through a server to the other computer clients that are participating in the same game. The server commonly manages a major portion of the computing workload for the game. For example, the server typically creates and controls the entire game or game world simulation and communicates the state of the game to the client computers. The client computers typically render the game for the players and transmit player actions back to the server for continued game simulation.
In general, client-server systems and P2P systems (and variations or hybrids thereof) have various strengths and weaknesses that must be considered when designing an online or networked game and deciding what type of architecture to use. There are some considerations that apply to all networked games.
Major considerations for all networked game designs, for example, include the level of communication traffic that the game will impose on the network and the network's speed and bandwidth capabilities. After all, the game will not be fun for the players if the network cannot handle the necessary size and number of communication packets that must be shared in order to play the game. For many networked games, however, the various players may access the network (e.g. the Internet) through an unknown number and variety of communication devices (e.g. routers, hubs, repeaters, modems, adapters, etc.), each having an unknown communication speed or bandwidth. To make the game playable or enjoyable for the most number of players, therefore, network traffic usually must be minimized.
In client-server systems (or hybrid systems, such as P2P systems in which one of the computers doubles as a sort of server), another significant consideration is the level of the workload on the server. In a typical example client-server system, the server may handle all, or a large portion, of the compute-intensive game world simulation functions, while the clients only have to render the results received from the server, among other less compute-intensive functions. In this case, a player may use almost any relatively cheap computer for a client, and the game is thus potentially accessible to a wide audience. In another example client-server system, simulations are caused by each client, as well as by the server. However, the server maintains the “true” or correct state of the simulation. To maintain a consistent game simulation across all the clients, the server periodically resynchronizes the states of the clients by sending a message indicating the correct state of the simulation to all clients. In either example, the server often must be a relatively expensive high-powered computer to handle the highly processor/memory-intensive functions necessary for many of today's multiplayer online games. A gaming business entity may, thus, assemble a large and very expensive server farm for its customers to access. To make a client-server-based game profitable for the business entity and affordable for its customers, therefore, server workload usually must be minimized.
Another significant consideration is rapid and accurate error detection and correction. This issue is especially (but not exclusively) significant in P2P systems in which each computer performs its own simulation of the game and in client-server system in which a portion of the simulation functions are performed by the clients, instead of the server, or the clients duplicate all or part of the simulation performed by the server. With such decentralized game simulation, there is a relatively high potential for discrepancies occurring between different simulations of the game. It is thus necessary for such errors to be detected early and corrected quickly for the players to have an acceptable game experience. If a game system has no feature for correcting errors, then the players may find that they are playing completely different games due to the discrepancy, and the game may suddenly terminate, leaving the players frustrated and highly disappointed with the game.
It is with respect to these and other background considerations that the present invention has evolved.